FEXP Solver  1.0.0.0
FEXPNetworkDataTransferAnalyzer.h
Go to the documentation of this file.
1 // © FEXP, FEXPEnterprise Solver, Ing. Vaclav Rek
3 // MEIM Analysis. Data exchange between the client nodes within the computer network.
4 // Compiler must support C++ ver.14 and later
6 #ifndef _CFEXPNETWORKDATATRANSFERANALYZER_H_
7 #define _CFEXPNETWORKDATATRANSFERANALYZER_H_
8 #include "FEXPCommon.h"
9 #include "FEXPTopologieKDTree.h"
10 #include "FEXPMultiGraph.h"
11 
18 
21 {
22 public:
24 
25  // pure virtual member functions
26  virtual void AddMacro(Ptr<CFEXGeomTools::t_BoundBox> bbox, size_t bboxid, size_t ownerid) = 0;
27  virtual bool Analyze () = 0;
28  virtual void Reset () = 0;
29 
30  virtual std::map<size_t, std::vector<size_t>> & GetTransferComputerModelFrom () = 0;
31  virtual std::map<size_t, std::vector<size_t>> & GetTransferComputerModelTo () = 0;
32  virtual std::map<size_t, size_t> & GetMacroToComputerAssociation() = 0;
33 protected:
34  // [no protected members] -----------------------------
35 private:
36  // [no private members ] -----------------------------
37 };
38 
45 
48  : public ICFEXPTransferAnalyzer
49 {
50 public:
53 
54  // override pure virtual member functions
55  virtual void AddMacro(Ptr<CFEXGeomTools::t_BoundBox> bbox, size_t bboxid, size_t ownerid) override;
56  virtual bool Analyze () override;
57  virtual void Reset () override { Init(); }
58 
59  virtual std::map<size_t, std::vector<size_t>> & GetTransferComputerModelFrom () override { return _transfer_model_from_computer; }
60  virtual std::map<size_t, std::vector<size_t>> & GetTransferComputerModelTo () override { return _transfer_model_to_computer; }
61  virtual std::map<size_t, size_t> & GetMacroToComputerAssociation() override { return _m_c_map; }
62 protected:
63  void Init();
64  using t_blocknd = std::vector<Ptr<CFEXPFECoordinates<t_fexpcommon_ct>>>;
66 private:
69  // graph-computer-model mapping
71  std::map<size_t, size_t> _m_c_map;
72  std::map<size_t, std::vector<size_t>> _c_m_map;
73  std::vector<size_t> _c_m_empty;
74 
75  // resulting transfer decision
76  std::map<size_t, std::vector<size_t>> _transfer_model_from_computer;
77  std::map<size_t, std::vector<size_t>> _transfer_model_to_computer;
78  std::map<size_t, size_t> _m_c_final_map;
79  std::map<size_t, std::vector<size_t>> _c_m_final_map;
80  // macro element kd tree map
81  Ptr<t_kd_tree> _macro_kd_tree;
82  // macro element contact multigraph map
83  Ptr<t_mugraph> _macro_multigraph;
84  // create kd-tree map and multigraph
85  void create_multigraph(Ptr<t_kd_tree> kd_tree, Ptr<t_mugraph> multi_graph);
86 };
87 
88 #endif // !_CFEXPNETWORKDATATRANSFERANALYZER_H_
std::map< size_t, std::vector< std::tuple< size_t, Ptr< CFEXGeomTools::t_BoundBox > >> > t_MacroModelMap
Definition: FEXPGeom.h:494
It contains algorithm for building of a kd-tree data structure and it also process range queries...
Definition: FEXPTopologieKDTree.h:209
std::vector< Ptr< CFEXPFECoordinates< t_fexpcommon_ct > >> t_blocknd
Definition: FEXPNetworkDataTransferAnalyzer.h:64
void Init()
Definition: FEXPNetworkDataTransferAnalyzer.cpp:10
virtual std::map< size_t, std::vector< size_t > > & GetTransferComputerModelTo()=0
virtual std::map< size_t, size_t > & GetMacroToComputerAssociation() override
Definition: FEXPNetworkDataTransferAnalyzer.h:61
Definition: FEXPCommon.h:276
virtual void Reset()=0
virtual ~ICFEXPTransferAnalyzer()
Definition: FEXPNetworkDataTransferAnalyzer.h:23
virtual std::map< size_t, std::vector< size_t > > & GetTransferComputerModelFrom() override
Definition: FEXPNetworkDataTransferAnalyzer.h:59
virtual ~CFEXPBaseTransferAnalyzer()
Definition: FEXPNetworkDataTransferAnalyzer.h:52
CFEXPBaseTransferAnalyzer()
Definition: FEXPNetworkDataTransferAnalyzer.h:51
virtual void AddMacro(Ptr< CFEXGeomTools::t_BoundBox > bbox, size_t bboxid, size_t ownerid) override
Definition: FEXPNetworkDataTransferAnalyzer.cpp:72
virtual void Reset() override
Definition: FEXPNetworkDataTransferAnalyzer.h:57
Base interface for MEIM analyzer.
Definition: FEXPNetworkDataTransferAnalyzer.h:20
virtual std::map< size_t, size_t > & GetMacroToComputerAssociation()=0
Definition: FEXPMultiGraph.h:18
Ptr< t_blocknd > GetBlockNodes(Ptr< CFEXGeomTools::t_BoundBox > bbox, size_t bboxid)
Definition: FEXPNetworkDataTransferAnalyzer.cpp:27
Base MEIM analyzer class.
Definition: FEXPNetworkDataTransferAnalyzer.h:47
virtual std::map< size_t, std::vector< size_t > > & GetTransferComputerModelFrom()=0
virtual bool Analyze()=0
virtual bool Analyze() override
Definition: FEXPNetworkDataTransferAnalyzer.cpp:169
virtual void AddMacro(Ptr< CFEXGeomTools::t_BoundBox > bbox, size_t bboxid, size_t ownerid)=0
virtual std::map< size_t, std::vector< size_t > > & GetTransferComputerModelTo() override
Definition: FEXPNetworkDataTransferAnalyzer.h:60